﻿/**
@file SpriteTimer.h
@author onlytest
@brief SpriteTimer类的头文件声明
@version 0.001
*/
#ifndef SPRITETIMER_H
#define SPRITETIMER_H
#include "SpritePerDefine.h"
namespace Sprite
{	
	/**
	@brief 引擎中时间类的定义
	*/
	class SpriteTimer
	{
	public:
		/**
		@brief SpriteTimer的构造函数
		*/
		SpriteTimer();
		/**
		@brief getGameTime得到从reset以后到当前的时间
		@return   float当前游戏时间以秒表示
		*/
		float getGameTime()const;  
		/**
		@brief getDeltaTime得到每帧之间的时间间隔
		@return   float返回每帧之间的时间间隔以秒表示
		*/
		float getDeltaTime()const; 

		/**
		@brief reset重置时间,每帧刷新前调用
		*/
		void reset(); 
		/**
		@brief start开始时间,当处于非暂停状态下使用
		*/
		void start(); // Call when unpaused.
		/**
		@brief stop停止时间，在暂停的时候调用
		*/
		void stop();  // Call when paused.
		
		/**
		@brief tick变换时间，将原当前时间定义为前一时间，取实际当前时间为当前时间
		*/
		void tick();  // Call every frame.

		
		bool isStopped() const { return m_bStopped; }
		void setStopped(bool val) { m_bStopped = val; }
	private:
		///每秒渲染的数量
		double mSecondsPerCount;
		///每帧之间的间隔
		double mDeltaTime;

		///基础时间
		__int64 mBaseTime;
		///暂停经过的时间
		__int64 mPausedTime;
		///停止的时刻
		__int64 mStopTime;
		///上一帧渲染的时间
		__int64 mPrevTime;
		///当前帧的时间
		__int64 mCurrTime;
		///是否停止
		bool m_bStopped;
		
	};
}

#endif
